package com.wanji.gateway.command;

import com.wanji.gateway.constant.CommandPriority;
import com.wanji.gateway.constant.CommandType;

public interface DeviceCommand {

    // 指令唯一标识
    String getId();

    // 指令类型
    CommandType getType();

    // 指令优先级（数值越大优先级越高）
    CommandPriority getPriority();

    // 指令超时时间（毫秒）
    long getTimeout();

    // 指令是否已确认
    boolean isAcknowledged();

    // 设置指令确认状态
    void setAcknowledged(boolean acknowledged);

    // 指令编码为字节数组
    byte[] encode();
}
